home *** CD-ROM | disk | FTP | other *** search
/ Aminet 31 / Aminet 31 (1999)(Schatztruhe)[!][Jun 1999].iso / Aminet / dev / c / GAPLib.lha / GAPLib_Beta / diagnostic / GaussRandTest.c < prev    next >
C/C++ Source or Header  |  1999-04-22  |  902b  |  61 lines

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. #include <time.h>
  5. #include <GAP.h>
  6.  
  7. int main(void)
  8. {
  9. int ret=0;
  10. int i,n;
  11. int    *sumar;
  12. double d,q,err;
  13.  
  14. InitRand(time(0));
  15.  
  16. sumar = malloc(sizeof(double)*129);
  17.  
  18. if(sumar!=0) {
  19.  
  20.     for(i=0;i!=129;i++) {
  21.         sumar[i] = 0.0;
  22.     }
  23.  
  24.     for(i=0;i!=1048076;i++) {
  25.         d = GaussRand(0.0,0.8);
  26.         n = (int)(32.0*d)+64;
  27.         if(n>=0 && n<128) {
  28.             sumar[n] = sumar[n] + 1.0;
  29.         }
  30.         if((i&32767)==32767) {
  31.             fputc('.',stdout);
  32.             fflush(stdout);
  33.         }
  34.     }
  35.  
  36.     sumar[64] = sumar[64]/2.0;    /* This feels like a bug. */
  37.  
  38.     q=1.0/(sumar[64]);
  39.     err = 0.0;
  40.  
  41.     for(i=0;i!=129;i++) {
  42.         d = exp(-pow(i/32.0-2,2.0));
  43.         err = err + pow((d-sumar[i]*q),2.0);
  44.     }
  45.  
  46.     printf("(%lf)\n",err);
  47.     if(err<1.41421356) {
  48.         printf("No worse than usual.\n");
  49.     } else {
  50.         printf("This sucks.\n");
  51.         ret = 5;
  52.     }
  53.  
  54.     free(sumar);
  55. } else {
  56.     fprintf(stderr,"No free store. (malloc() failed)\n");
  57. }
  58.  
  59. return(ret);
  60. }
  61.